Power on and off functions of computer systems, such as the stand-alone PC, is normally implemented through an external power switch, which controls the PC switching on and off functions by means of appropriate circuitry in a rather straight forward manner. In more complicated systems such as server computers, power on and off switching as well as a series of power off/power on operations (referred to as power cycling) are implemented in a more sophisticated manner, using a so-called Advanced Configuration and Power Interface Specification ACPI (see http://www.teleport.com/acpi), and a state machine circuitry that follows the ACPI state transition rules (for short ACPI state machine). The ACPI provides a standard way for managing computer systems specifically focused on items relating to power management of the computer system. ACPI defines various power states of the system as a whole and of sub-modules/functions in it, the rules of transition and the interface used for implementing it. Part of the power transition mechanism is the power switch. Server systems also utilize an embedded controller unit (e.g., the so-called BMC - Baseboard Management Controller -see IPMI specifications -http://developer.intel.com/design/servers/ipmi/spec.htm which, inter alia, reports to a remote console the status of the Server and enables the remote console to control designated functions in the server, such as remote power cycling and others. Modern server system combines the two functions of ACPI and remote manageability through BMC. A typical server system employing a remote power cycling mechanism is depicted in FIG. 1. Thus, FIG. 1, illustrates a system (100) CPU (2) coupled to North Bridge module (3), which, in turn, is coupled to system memory (4), Graphics controller (5) and South Bridge (6) which accommodates ACPI state machine unit (7). The architecture and operation of the various modules of the system (100) is generally known per se and therefore will not be further expounded upon herein. As is generally known per se, when the ACPI is in a state that signifies an internal state of the system (100) that requires the system to be powered on in response to one or more wake events (e.g., power button pushed, real-time clock wake, modem ring etc), the ACPI state machine asserts to a low level its power supply control output (ONCTL#). The ONCTL# signal (7) (having “0” logic level) is fed to OR gate (8) which has its other input being low (the usage of this other input is to be discussed later), and the resulting signal (9) is fed to the power supply module (10) which, in a known per se manner, will turn the system on by starting the main power rail of the system. When the assertion of power on all its outputs, the ‘power-good’ output of the power supply indicates that by becoming active a shut down of the system may be triggered for various reasons. The shut down operation is normally handled by the CPU to make all preparations for consistent system bring down and then, via a write operation, commands the ACPI state machine to switch to the appropriate power state (e.g., S5) and de-assert the ONCTL# signal to a ‘1’ logic level. In response to the input ‘1’ logic level, the OR gate output goes to high level that is fed to the power supply module which, in turn, removes power from the various power rails and de-asserts the ‘power-good’ output. Note that this shut down will work only if the CPU is active. In case of a fail that prevents the CPU to handle the shut down process, pushing the power button for a period of 4-seconds will cause the ACPI state machine to turn the system off (to S5) by de-asserting (1) the ONCTL# output.
The system has various fault detection-mechanisms such as the ‘crow-bar’ which checks that the ONCTL# command, the ACPI state machine output and the power supply response to it are all consistent. In case of a failure, a lockdown of the system may be initiated until an operator operation is done (e.g., unplug the machine from the wall power).
The self triggering power shut-down through the ACPI module has known important advantages, however, it does not satisfy a fundamental need, i.e. applying a power shut-down (or power cycling) through an external event such as a command received from a remote consol through a LAN or modem. Such an external triggering event is normally required in order to enable an operator to initiate a power shut down (or power cycling) w/o physical access to the computer. To this end, and as shown in FIG. 1, a power shutdown in system 100 may also be triggered by means of pressing the power button (11) and feeding the signal directly to the ACPI module through input (12′). The latter, in turn, will initiate the power shut-down in the manner described above.
There are circumstances where the operation of the external power shutdown (power cycling) function through the power button (11) should be selectively inhibited (to prevent accidental touch of the button) and/or the triggering shut down or power-on by a command received from a different source (e.g. remote command from a LAN (13) or external sensor (14)). By this mode of operation the power button input is fed to an embedded controller (say, BMC module (12)). Depending upon the desired mode of operation the BMC module will either degenerate the operation of so pressed power button switch, or in alternative mode, in response to activating the power button switch, an appropriate (“1”) signal (‘13’) is generated and fed to OR gate (8) which, in turn, produces an ONCTL# signal that triggers the power shutdown. Later the signal is released (‘1’) for the system to turn on again. Using the BMC module has the following advantages: (i) it can selectively disable/enable the operation of the power button switch upon remote commands; (ii), other sources for initiation of the power off functions (such as remote command through LAN (13) or external sensors (14)) are supported.
Note, however, that this mode of operation (i.e. using an embedded controller to directly control ONCTL#) has an inherent limitation in that the ACPI module is not “aware” that a power shutdown has occurred leaving, thus, the system in an inconsistent state where, on the one hand, a power shutdown or power cycling has been initiated and, on the other hand, the system state, as reflected in the ACPI state machine, is not aware of the power cycling/power shutdown operation. Such an inconsistent situation may cause a system fault such as the craw bar described above. Also, it prevents the system from executing the proper shut-down sequence which may result in loss of data or corruption of file system state.
There is, thus, a need in the art to provide for a power cycling/power shutdown function which enables, whenever required, to selectively disable the operation of the external power button whilst maintaining a consistent system state as reflected by the state machine (such as the ACPI).